1. Field of Invention
The present invention relates to network devices, including switches, routers and bridges, which allow for data to be routed and moved in computing networks. More specifically, the present invention provides for an improved method of classifying flows of packets through a network device and a network device having such a processor to classify flows.
2. Description of Related Art
Many types of network devices are necessary to allow a network to function properly. One such network device is commonly referred to as a switch. A switch is defined as a network component that receives incoming data, stores the data temporarily, and sends the data back out on another port. The switching is accomplished by determining a destination address from the incoming data and sending the data to a port or set of ports associated with the destination address. The control and monitoring of a switch is essential in handling the flow of data in high speed networks. The effective functioning of the switch can be enhanced by control of the traffic through the switch, including monitoring and modification of that traffic. One such function is the control of the selective flow of data through the switch in response to congestion, either internal or external to the switch. There are many mechanisms that are known and applied to networks to allow for the switch to respond to congestion.
A particular function that allows for network devices to monitor such flows for congestion is filtering of the data that pass through the network devices. Such filtering of packets can be either static or dynamic, and can examine a packet header to determine attributes of the packet, such as its source or destination, or examine other portions of the packet. Some network devices have fast filtering processors that are independent of any central processing unit connected to the network device. Because of the independence of such fast filtering processors, linespeed processing is more easily achieved and the functions of the processor can be tailored to the filtering functions required than could a central processing unit (CPU).
One example of a filtering processor is described in U.S. Pat. No. 6,335,935, which is hereby incorporated by reference. Additionally, these systems are often implemented using large, fixed size masks that are applied to portions of the packets. The application of the masks allows for selected packet fields to be extracted and the processor determines if extracted fields match configured values so that a specific action can be implemented. Additionally, filtering may also include management of flows through the network device and allow for the specific handling of certain data based on fields within the packet. These fields contain data about the source, destination, protocol and other properties of the packet. Classification of flows of incoming packets on an ingress port of a network device is helpful in providing differentiated services to different types of traffic flows.
However, these fast filtering processors require that a significant portion of the network device be utilized in the filtering process. The filtering processes are generally not expandable, and can take a great number of cycles to process and can increase therefore latency periods for address resolution lookup (ARL) and ingress processes. Given that the number of masks that can be applied is generally limited, the number of functions that a fast filtering processor can perform is also limited.
As such, there is a need for an efficient filtering method and apparatus that allows for a greater number of masks to be applied to the data passing through network devices. There is also a need for filtering mechanisms that are more flexible but do not require more a greater amount of space on the network device and do not require significantly greater processing power to carry out.